let doc = document
let win = window
// 页面数据
// @ts-ignore：
var pageType = parseInt(doc.body.getAttribute('data-page-type')) || 0 // 页面方向 0竖1横
// @ts-ignore：
var designWidth = parseInt(doc.body.getAttribute('data-design-width')) || 375 // 设计宽度
// @ts-ignore：
var maxWidth = parseInt(doc.body.getAttribute('data-max-width')) || designWidth // 最大页面适配宽度

// 创建1rem宽度的不可见元素，用于计算原始缩放比例
var scaleDom = (function () {
    var scaleDom = doc.createElement('div')
    scaleDom.style.cssText = 'width:1rem;height:0;overflow:hidden;position:absolute;z-index:-2;visibility:hidden;'
    doc.body.appendChild(scaleDom)
    return scaleDom
})()

// 计算使用过fontSize缩放(如微信)下的原始缩放比例
function getOriginScale() {
    // @ts-ignore：
    var htmlFontSize = Number(String(doc.querySelector('html').style.fontSize || 16).replace('px', ''))
    var instanceWidth = Number(String(win.getComputedStyle ? win.getComputedStyle(scaleDom).width : scaleDom.offsetWidth).replace('px', ''))
    var scale = (htmlFontSize && instanceWidth) ? htmlFontSize / instanceWidth : 1
    return scale
}

function setScale() {
    var scale = getOriginScale()
    var clientWidth = doc.documentElement.clientWidth
    var clientHeight = doc.documentElement.clientHeight
    if (!clientWidth || !clientHeight) return
    var calWidth = clientWidth
    // @ts-ignore：
    win.uimakerScale = calWidth / designWidth * scale
    // @ts-ignore：
    doc.documentElement.style.fontSize = 100 * win.uimakerScale + 'px'
}

try {
    doc.addEventListener('DOMContentLoaded', setScale, false)
    win.addEventListener('orientationchange' in win ? 'orientationchange' : 'resize', setScale, false)
    win.addEventListener('load', setScale, false)
    win.addEventListener('resize', setScale, false)
} catch (error) {

}

export default {
    install(vue, options) {
        setTimeout(() => {
            setScale();
        }, 100);
    }
};
